package com.utils.excel;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

/**
 * 创建Excel文件并写入内容
 */
public class CreateExcel {
	public static void main(String[] args) throws IOException {
		//HSSFWorkbook类:操作xls
		Workbook workbook1 = new HSSFWorkbook();
		//XSSFWorkbook类:操作xlsx
		Workbook workbook2 = new XSSFWorkbook();
		//将两个对象放入到一个数组中
		Workbook[] workbooks = {workbook1, workbook2};
		//循环遍历分解操作两个类
		for (int i = 0; i < workbooks.length; i++) {
			//获取具体的某一个Workbook对象
			Workbook workbook = workbooks[i];
			//创建工作簿sheet。参数：确定工作簿的名称，如果不写，系统默认会给一个名称，sheetn
			Sheet sheet = workbook.createSheet("userinfos");

			//通过工作簿，创建每一行
			Row row = sheet.createRow(0);//索引，从0开始。0代表第一行

			//通过行创建列
			//第一行第一列
			Cell cell1_1 = row.createCell(0);
			//设置数据的值
			cell1_1.setCellValue("姓名");

			//第一行第二列
			Cell cell1_2 = row.createCell(1);
			cell1_2.setCellValue("性别");

			//第一行的第三列
			Cell cell1_3 = row.createCell(2);
			cell1_3.setCellValue("年龄");


			//创建第二行的row
			Row row2 = sheet.createRow(1);
			//通过行创建列
			//第二行第一列
			Cell cell2_1 = row2.createCell(0);
			cell2_1.setCellValue("刘德华");

			//第二行第二列
			Cell cell2_2 = row2.createCell(1);
			cell2_2.setCellValue("男");

			//第二行的第三列
			Cell cell2_3 = row2.createCell(2);//数字类型
			cell2_3.setCellValue(60);

			//创建第三行的row
			Row row3 = sheet.createRow(2);
			//通过行创建列
			//第三行第一列
			Cell cell3_1 = row3.createCell(0);
			cell3_1.setCellValue("刘盼民");

			//第三行第二列
			Cell cell3_2 = row3.createCell(1);
			cell3_2.setCellValue("男");

			//第三行的第三列
			Cell cell3_3 = row3.createCell(2);//数字类型
			cell3_3.setCellValue(18);

			String filePath = "C:\\Users\\panpa\\Desktop\\测试.xls";
			if (workbook instanceof XSSFWorkbook) {
				filePath += "x";//如果是操作xlsx对量的类，就在后缀中加一个x
			}
			//将创建好的内容写入到磁盘中
			OutputStream out = new FileOutputStream(new File(filePath));
			workbook.write(out);
			out.close();
			System.out.println(filePath+"文件创建成功！");
		}
	}
}
